package com.ztt.vxchat.utils;

import cn.hutool.core.lang.Console;
import cn.hutool.core.util.ReUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;

import java.util.Map;

/**
 * @author ztt
 * @project_name vx-chat
 * @description []
 * @date 2022/8/24 16:38
 */
public class SwitchUtil {





    public static JSONObject handler(JSONObject json){

        String jsonStr = JSONUtil.toJsonStr(json);

        SwitchInfoUtil switchInfoUtil = new SwitchInfoUtil();

        if(ReUtil.isMatch("(.*?)【天气(.*?)】(.*?)", jsonStr)){
            String city = ReUtil.get("【天气\\((.*?)\\)】", jsonStr, 1);
            switchInfoUtil.getWeather(city);
        }
        if(ReUtil.isMatch("(.*?)【星座(.*?)】(.*?)", jsonStr)){
            String horoscope = ReUtil.get("【星座\\((.*?)\\)】", jsonStr, 1);
            switchInfoUtil.getFortune(horoscope);
        }

        JSONObject endJson = JSONUtil.createObj();

        for (Map.Entry<String, Object> item : json) {

            String key = item.getKey();
            String value = item.getValue().toString();

            value = replace(value,switchInfoUtil);

            endJson.set(key,JSONUtil.parseObj(value));
        }


        Console.log("endJson"+endJson);
        return endJson;
    }


    public static String replace(String value,SwitchInfoUtil switchInfoUtil){

        if(ReUtil.isMatch("(.*?)【天气.城市】(.*?)",value)){
            value = value.replaceAll("【天气.城市】",switchInfoUtil.getWeatherCity());
        }

        if(ReUtil.isMatch("(.*?)【天气.日期】(.*?)",value)){
            value = value.replaceAll("【天气.日期】",switchInfoUtil.getWeatherDate());
        }

        if(ReUtil.isMatch("(.*?)【天气.星期】(.*?)",value)){
            value = value.replaceAll("【天气.星期】",switchInfoUtil.getWeatherWeek());
        }

        if(ReUtil.isMatch("(.*?)【天气.类型】(.*?)",value)){
            value = value.replaceAll("【天气.类型】",switchInfoUtil.getWeatherType());
        }

        if(ReUtil.isMatch("(.*?)【天气.最高气温】(.*?)",value)){
            value = value.replaceAll("【天气.最高气温】",switchInfoUtil.getWeatherHigh());
        }

        if(ReUtil.isMatch("(.*?)【天气.最低气温】(.*?)",value)){
            value = value.replaceAll("【天气.最低气温】",switchInfoUtil.getWeatherLow());
        }

        if(ReUtil.isMatch("(.*?)【天气.风向】(.*?)",value)){
            value = value.replaceAll("【天气.风向】",switchInfoUtil.getWeatherFengxiang());
        }

        if(ReUtil.isMatch("(.*?)【天气.风力】(.*?)",value)){
            value = value.replaceAll("【天气.风力】",switchInfoUtil.getWeatherFengli());
        }

        if(ReUtil.isMatch("(.*?)【天气.建议】(.*?)",value)){
            value = value.replaceAll("【天气.建议】",switchInfoUtil.getWeatherTip());
        }







        if(ReUtil.isMatch("(.*?)【星座.整体指数】(.*?)",value)){
            value = value.replaceAll("【星座.整体指数】",switchInfoUtil.getFortuneAll());
        }

        if(ReUtil.isMatch("(.*?)【星座.恋爱指数】(.*?)",value)){
            value = value.replaceAll("【星座.恋爱指数】",switchInfoUtil.getFortuneLove());
        }

        if(ReUtil.isMatch("(.*?)【星座.工作指数】(.*?)",value)){
            value = value.replaceAll("【星座.工作指数】",switchInfoUtil.getFortuneWork());
        }

        if(ReUtil.isMatch("(.*?)【星座.财运指数】(.*?)",value)){
            value = value.replaceAll("【星座.财运指数】",switchInfoUtil.getFortuneMoney());
        }

        if(ReUtil.isMatch("(.*?)【星座.幸运颜色】(.*?)",value)){
            value = value.replaceAll("【星座.幸运颜色】",switchInfoUtil.getFortuneLuckycolor());
        }

        if(ReUtil.isMatch("(.*?)【星座.幸运数字】(.*?)",value)){
            value = value.replaceAll("【星座.幸运数字】",switchInfoUtil.getFortuneLuckynumber());
        }

        if(ReUtil.isMatch("(.*?)【星座.匹配星座】(.*?)",value)){
            value = value.replaceAll("【星座.匹配星座】",switchInfoUtil.getFortuneLuckyconstellation());
        }

        if(ReUtil.isMatch("(.*?)【星座.短评】(.*?)",value)){
            value = value.replaceAll("【星座.短评】",switchInfoUtil.getFortuneShortcomment());
        }

        if(ReUtil.isMatch("(.*?)【星座.整体评价】(.*?)",value)){
            value = value.replaceAll("【星座.整体评价】",switchInfoUtil.getFortuneAllStr());
        }

        if(ReUtil.isMatch("(.*?)【星座.恋爱评价】(.*?)",value)){
            value = value.replaceAll("【星座.恋爱评价】",switchInfoUtil.getFortuneLoveStr());
        }

        if(ReUtil.isMatch("(.*?)【星座.工作评价】(.*?)",value)){
            value = value.replaceAll("【星座.工作评价】",switchInfoUtil.getFortuneWorkStr());
        }

        if(ReUtil.isMatch("(.*?)【星座.财运评价】(.*?)",value)){
            value =  value.replaceAll("【星座.财运评价】",switchInfoUtil.getFortuneMoneyStr());
        }

        if(ReUtil.isMatch("(.*?)【星座.健康评价】(.*?)",value)){
            value = value.replaceAll("【星座.健康评价】",switchInfoUtil.getFortuneHealthStr());
        }






        if(ReUtil.isMatch("(.*?)【情话】(.*?)",value)){
            value = value.replaceAll("【情话】",SwitchInfoUtil.getLove());
        }

        if(ReUtil.isMatch("(.*?)【笑话】(.*?)",value)){
            value = value.replaceAll("【笑话】",SwitchInfoUtil.getJoke());
        }

        if(ReUtil.isMatch("(.*?)【励志】(.*?)",value)){
            value = value.replaceAll("【励志】",SwitchInfoUtil.getEn());
        }

        if(ReUtil.isMatch("(.*?)【骚话】(.*?)",value)){
            value = value.replaceAll("【骚话】",SwitchInfoUtil.getSao());
        }


        if(ReUtil.isMatch("(.*?)【距离之前日期\\((.*?)\\)】(.*?)",value)){
            value = value.replaceAll("【距离之前日期\\((.*?)\\)】",SwitchInfoUtil.getBeforeNowDay(ReUtil.get("【距离之前日期\\((.*?)\\)】",value,1)));
        }




        return value;
    }

}
